﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO.Clases;
using BussinesLayer.Clases;
using Utilities;
using CustomControl;

namespace Aplicacion.Administracion.Puntos
{
    public partial class frmPuntos : Form
    {
        /// <summary>
        /// Atributo de modelo de negocios.
        /// </summary>
        public BussinesPunto miBussinesPunto;
       
        /// <summary>
        /// Objeto de mensajes de error
        /// </summary>
        private ErrorProvider er = new ErrorProvider();

        /// <summary>
        /// Determina el estado de la validación
        /// </summary>
        private bool ventaminima = false;
        private bool numeropunto = false;
        private bool valorpunto = false;        
       
        public frmPuntos()
        {
            InitializeComponent();
        }

        private void frmPuntos_Load(object sender, EventArgs e)
        {
          miBussinesPunto = new BussinesPunto();
          CargaPunto();
        }
        
        private void btnGuardarPuntos_Click(object sender, EventArgs e)
        {
            validacion();
            if (numeropunto && valorpunto && ventaminima)
            {
                DialogResult r = MessageBox.Show("Desea guardar los cambios", "Guardar", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (r == DialogResult.Yes)
                {
                    miBussinesPunto = new BussinesPunto();
                    var miPunto = new DTO.Clases.Puntos();

                    try
                    {
                        miPunto.ValorVentaMinPunto = Convert.ToInt32(txtVentaMinima.Text);
                        miPunto.NumeroPuntos = Convert.ToDouble(txtNumeroPuntos.Text);
                        miPunto.ValorPunto = Convert.ToDouble(txtValorPuntos.Text);
                        if (rbtnActivo.Checked)
                        {
                            miPunto.EstadoPunto = true;
                        }
                        if (rbtnInactivo.Checked)
                        {
                            miPunto.EstadoPunto = false;
                        }
                        miBussinesPunto.ModificaPunto(miPunto);
                        OptionPane.MessageInformation("se ha guardado exitosamente");
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }

        private void tsSalir_Click(object sender, EventArgs e)
        {
            Close();
        }              
      
        private void txtVentaMinima_Validating(object sender, CancelEventArgs e)
        {
            if (!Validacion.EsVacio(txtVentaMinima, er, "El campo es nesesario"))
            {
                if (Validacion.ConFormato(Validacion.TipoValidacion.Numeros, txtVentaMinima, er, "Formato incorrecto"))
                {
                    ventaminima = true;
                }
                else
                {
                    ventaminima = false;
                }
            }
            else
            {
                ventaminima = false;
            }

        }
      
        private void txtValorPuntos_Validating(object sender, CancelEventArgs e)
        {
            if (!Validacion.EsVacio(txtVentaMinima, er, "El campo es nesesario"))
            {
                if (Validacion.ConFormato(Validacion.TipoValidacion.NumerosYPunto, txtValorPuntos, er, "Formato incorrecto"))
                {
                    valorpunto = true;
                }
                else
                {
                    valorpunto = false;
                }

            }
            else
            {
                valorpunto = false;
            }
        }
      
        private void txtNumeroPuntos_Validating(object sender, CancelEventArgs e)
        {
            if (!Validacion.EsVacio(txtNumeroPuntos, er, "El campo es nesesario"))
            {
                if (Validacion.ConFormato(Validacion.TipoValidacion.NumerosYPunto, txtNumeroPuntos, er, "Formato incorrecto"))
                {
                    numeropunto = true;
                }
                else
                {
                    numeropunto = false;
                }
            }
            else
            {
                numeropunto = false;
            }
        }

        /// <summary>
        /// Método cargar puntos.
        /// </summary>
        private void CargaPunto()
        {
            try
            {
                var mipunto = new DTO.Clases.Puntos();
                mipunto = miBussinesPunto.CargarPunt();
                this.txtVentaMinima.Text = Convert.ToString(mipunto.ValorVentaMinPunto);
                this.txtNumeroPuntos.Text = Convert.ToString(mipunto.NumeroPuntos);
                this.txtValorPuntos.Text = Convert.ToString(mipunto.ValorPunto);
                var estado = Convert.ToString(mipunto.EstadoPunto);
                if (mipunto.EstadoPunto)
                {
                    this.rbtnActivo.Checked = true;
                }
                else
                {
                    this.rbtnInactivo.Checked = true;
                }
            }
            catch (Exception ex)
            {
                OptionPane.MessageError(ex.Message);
            }
        }

        /// <summary>
        /// Revalidación.
        /// </summary>
        private void validacion()
        {
            this.txtVentaMinima_Validating(null, null);
            this.txtValorPuntos_Validating(null, null);
            this.txtNumeroPuntos_Validating(null, null);

        }

              
    }
}